package info.u250.c2d.accessors;

import aurelienribon.tweenengine.TweenAccessor;
import info.u250.c2d.engine.C2dCamera;

/**
 * change some attributes of the camera
 *
 * @author xjjdog
 */
public class C2dCameraAccessor implements TweenAccessor<C2dCamera> {

    public final static int Zoom = 1;
    public final static int XY = 2;
    public final static int ROTATION = 3;


    @Override
    public int getValues(C2dCamera target, int tweenType, float[] returnValues) {
        switch (tweenType) {
            case Zoom:
                returnValues[0] = target.zoom;
                return 1;
            case XY:
                returnValues[0] = target.position.x;
                returnValues[1] = target.position.y;
                return 2;
            case ROTATION:
                returnValues[0] = target.getRotate();
                return 1;
            default:
                assert false;
                return -1;
        }
    }

    @Override
    public void setValues(C2dCamera target, int tweenType, float[] newValues) {
        switch (tweenType) {
            case Zoom:
                target.zoom = newValues[0];
                break;
            case XY:
                target.position.x = newValues[0];
                target.position.y = newValues[1];
                break;
            case ROTATION:
                target.setRotate(newValues[0]);
                break;
            default:
                assert false;
        }
    }

}